package edu.caece.algo2.tp.hospital.ambulancia;

import java.util.Random;
import java.util.Timer;

import edu.caece.algo2.tp.hospital.Hospital;
import edu.caece.algo2.tp.mapa.Esquina;

/**
 * Clase que representa las ambulancias aereas.
 *
 */
public class AmbulanciaAerea extends Ambulancia {

	private static final Integer kTipoAmbulancia = new Integer(5);
	
	private int tiempoADestino;
	private Esquina destino;
	private Timer timer;

	public AmbulanciaAerea(Hospital hospital) {
		super(hospital);
		this.timer = new Timer();
	}
	
	public int getTiempoADestino() {
		return tiempoADestino;
	}
	
	/**
	 * Inicia el recorrido de la ambulancia.
	 * @param destino
	 */
	public void dirigir(Esquina destino){
		Random random = new Random();
		this.destino = destino;
		this.tiempoADestino = random.nextInt(29) + 1;
		ejecutarCiclo();
	}
	
	@Override
	public Integer getTipo() {
		return kTipoAmbulancia;
	}
	
	@Override
	public void ejecutarCiclo() {
		long tiempo = getTiempoADestino() * 1000;
		if (isDisponible()){
			setStatus(STATUS_EN_VIAJE_IDA);
			System.out.println("DEBUG Ambulancia "+getId()+" en movimiento - Tiempo de recorrido a " + 
					this.destino.getCalleNombre() + " al " + this.destino.getCalleNumero() + ": " + tiempo);
			this.timer.schedule(new AmbulanciaMovimientoTask(this), tiempo);
		} else {
			setStatus(STATUS_DISPONIBLE);
			notificarRetorno();
		}
	}

}
